/*
 * Copyright (C) 2000-2008 Jens Nixdorf and various contributors
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to
 * deal in the Software without restriction, including without limitation the
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 * sell copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies of the Software, its documentation and marketing & publicity
 * materials, and acknowledgment shall be given in the documentation, materials
 * and software packages that this Software was used.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
package org.mopore.jat.core.fadingmessage.calibration.visual;



import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Shape;

public class CalibrationPainter {

    private Composite alphaComposite;

    private boolean finished;

	private Color borderColor;

	private PulseColorContainer colorContainer;

	
    public CalibrationPainter( ) {
        finished = false;
        borderColor = new Color( 180, 0, 0 );
        colorContainer = new PulseColorContainer();
    }

    public void paintCalibtration(final Graphics2D g, 
    		final Composite origComposite, final CalibrationState calibtrationState) {

        boolean isCalibrated = calibtrationState.isCalibrated();
        alphaComposite = colorContainer.requestAlphaComposite( isCalibrated );
        g.setComposite( alphaComposite );
        
        Shape messageWindowShape = calibtrationState.getMessageWindowShape();
        boolean mousIsOver =  calibtrationState.isMoveOver();
        Color fillColor = colorContainer.requestColor( mousIsOver );
        g.setColor( fillColor );
        g.fill( messageWindowShape );
		g.setColor( borderColor );
        g.draw( messageWindowShape );
        
        g.setComposite(origComposite);
        finished = colorContainer.isFinished();
    }

    public boolean isFinished() {
        return finished;
    }

}
